package com.welink.cmp.statemachine.machine;

/**
 * 防火墙状态枚举类
 * 描述防火墙在不同生命周期中的状态
 */
public enum CommonState {

    /**
     * 初始状态，防火墙刚入库，还未进行任何操作
     */
    NEW(1),

    /**
     * 防火墙处于空闲状态，未被分配使用
     */
    IDLE(2),

    /**
     * 防火墙处于生产状态，已投入使用
     */
    ACTIVE(3),

    /**
     * 防火墙处于故障状态，需要维修
     */
    FAULTY(7),

    /**
     * 防火墙已报废，不再使用
     */
    RETIRED(0);

    private int code;

    private String desc;

    CommonState(int code) {
        this.code = code;
    }

    @Override
    public String toString() {
        switch(this) {
            case NEW:
            case IDLE:
            case ACTIVE:
            case FAULTY:
            case RETIRED:
                return String.format("%s-%d",desc, code);
            default: throw new IllegalArgumentException();
        }
    }

    public int getCode() {
        return code;
    }
}